在身边人的推荐下,我也踏入了buu的刷题之旅,怀着一丢丢激动,还有些许不安(毕竟菜),在这里记录一下自己的刷题经历
warmup_csaw_2016
1 | from pwn import * |
pwn1_sctf_2016
1 | from pwn import * |
not_the_same_3dsctf_2016
这题,利用mrotect,修改了可执行区域
1 | from pwn import * |
get_started_3dsctf_2016
这题的思路呢,和上面not_the_same_3dsctf_2016类似
1 | from pwn import * |
ciscn_2019_n_1
1 | from pwn import * |
ciscn_2019_en_2
1 | from pwn import * |
ciscn_2019_c_1
1 | from pwn import * |
babyheap_0ctf_2017
这题的漏洞点呢,主要在edit的size由你自己决定又因为delete进行了0操作,所以得通过fake,讲一个堆块的指针指到unsoted bin堆块的地方进行读取
1 | from pwn import * |
babyfengshui_33c3_2016
1 | from pwn import * |
ciscn_s_3
考点在srop。
首先了解一下,在rax=15时会触发 SigreturnFrame ,又可以通过观察汇编,看到两次的栈空间都是0x10。
ciscn_2019_n_3
原本是ubuntu16.04环境的,但是远程是18,也不是不可以打。就借此把两个环境的打法都说一下吧。
ubuntu16.04
打法1
uaf漏洞,且题目中records结构体会先行malloc(0xc),且放入对应的指针。
若是str类型,那么就是str_printf,str_free和一个指向chunk的指针
若是int类型,那么就是int_printf,int_free和直接写入的数值
那么我们的思路就是修改records中的free指针,改为system,然后在对应的chunk内写入binsh,将其free。
1 | context.log_level = 'debug' |
打法2
利用unsorted bin在malloc时,如果剩余的bin大小不足以容纳fd + bk,那么就会全部被malloc出去。
1 | from pwn import * |
ubuntu18
tcache bin的double free
1 | from pwn import * |